package main

import "fmt"

var x int
var y string
var a string

// 批量声明变量
var (
	c string
	d int
	e bool
)

// 批量声明常量,如果某一行没赋值，则值为上一行数据
const (
	pi1 = 3.1415
	pi2
	pi3
	pi4 string = "aa"
	pi5
)

// 返回多个值
func foo() (int, string) {
	return 10, "abc"
}

// iota用法（go特有的计数器）在const中定义iota从0开始
const (
	a1 = iota
	a2
	a3
)

// iota运用到内存大小常量 << 左移 >> 右边
const (
	_  = iota             // "_"是匿名变量 iota = 0
	KB = 1 << (10 * iota) // 1左移10位 1024 iota：1*2的（10*iota）次方
	MB = 1 << (10 * iota) // 1左移20位 1048576 iota: 2
	GB = 1 << (10 * iota)
	TB = 1 << (10 * iota)
)

// “_”代表忽略该值，第一个语句获取x值，忽略y值
func main() {
	x, _ := foo()
	_, y := foo()
	fmt.Println("x=", x)
	fmt.Println("y=", y)
	// 占位符 %s
	a = "abc"
	fmt.Println("a:%", a)
	fmt.Println(pi3)
	fmt.Println(a1, a2, a3)
	fmt.Println(KB, MB, GB, TB)
}
